package com.yungu.swift.system.sys.service;

import com.yungu.swift.base.ResponseData;
import com.yungu.swift.base.model.PageVo;
import com.yungu.swift.base.model.admin.AdminPageParam;
import com.yungu.swift.base.service.BaseService;
import com.yungu.swift.system.sys.model.dto.SysBusinessDto;
import com.yungu.swift.system.sys.model.dto.SysBusinessOrganizationDto;
import com.yungu.swift.system.sys.model.dto.SysCityDto;
import com.yungu.swift.system.sys.model.vo.BusinessDetailVo;
import com.yungu.swift.system.sys.model.vo.BusinessVo;

import java.util.List;
import java.util.Map;


/**
 * SysBusinessOrganizationService
 * 重写 add方法
 **/

public interface SysBusinessOrganizationService extends BaseService<SysBusinessOrganizationDto> {


    /**
     * 删除组织机构的业务
     *
     * @param uuid 参数
     * @return ResponseData
     */
    ResponseData<Boolean> delete(String uuid);

    /**
     * 查询组织机构的业务详情
     *
     * @param organizationUuid 参数
     * @param uuid             参数
     * @return List
     */
    ResponseData<List<BusinessDetailVo>> getBusinessDetail(String organizationUuid, String uuid);

    /**
     * 编辑业务下的资源
     *
     * @param uuid     参数
     * @param resIds   参数
     * @param userUuid 参数
     * @param type     参数
     * @return ResponseData
     */
    ResponseData<Boolean> editResource(String uuid, String resIds, String userUuid, int type);


    /**
     * 编辑跨城业务下的起终点资源
     *
     * @param uuid   参数
     * @param resIds 参数
     * @return ResponseData
     */
    ResponseData<Boolean> pointSiteEditResource(String uuid, String resIds);

    /**
     * 获取组织机构的业务
     *
     * @param paramMap 参数  key：organizationUuid
     * @return List
     */
    ResponseData<List<BusinessVo>> getBusiness(Map<String, Object> paramMap);

    /**
     * 获取组织机构（某一城市）开通业务
     *
     * @param paramMap 参数
     * @return List
     */
    ResponseData<List<SysBusinessDto>> getCityBusiness(Map<String, Object> paramMap);


    /**
     * 查询抽成列表
     *
     * @param driverUuid
     * @param businessType
     * @return
     */
    ResponseData<List<SysBusinessOrganizationDto>> getCommission(String driverUuid, Integer businessType);

    /**
     * 后台app业务管理列表
     *
     * @return PageVo
     */
    ResponseData<PageVo<BusinessVo>> queryPageAdmin(AdminPageParam adminPageParam);

    /**
     * 查询组织机构已开通的业务
     *
     * @param paramMap 参数
     * @return List
     */
    ResponseData<List<SysBusinessDto>> getOrgUuidBusName2BeanMap(Map<String, Object> paramMap);

    /**
     * 查询组织机构已开通的业务城市
     *
     * @param paramMap 参数
     * @return List
     */
    ResponseData<List<SysCityDto>> getOrgUuidBusUuidCityName2BeanMap(Map<String, Object> paramMap);

    /**
     * 查询平台抽成列表
     *
     * @param driverUuid
     * @param businessType
     * @return
     */
    ResponseData<SysBusinessOrganizationDto> getPlatformCommission(String driverUuid, Integer businessType);

    /**
     * 查询代理抽成列表
     *
     * @param driverUuid
     * @param businessType
     * @return
     */
    ResponseData<SysBusinessOrganizationDto> getAgencyCommission(String driverUuid, Integer businessType);

    /**
     * 查询公司抽成列表
     *
     * @param driverUuid
     * @param businessType
     * @return
     */
    ResponseData<SysBusinessOrganizationDto> getCompanyCommission(String driverUuid, Integer businessType);
}
